package com.example.java8.feature_01;

//让Printer实现Product接口
public class Printer implements Product, Output {
	
	
	private String[] printData = new String[MAX_CACHE_SIZE];
	
	//用以记录当前需要打印的作业数
	private int dataNum = 0;

	//实现Product接口的方法
	@Override
	public int getProductTime() {
		return 45;
	}

	//实现Output接口的方法
	@Override
	public void out() {
		while(dataNum > 0){
			System.out.println("打印" + printData[0]);
			//把作业队列整体前移一位、并将剩下的作业数减1
			System.arraycopy(printData, 1, printData, 0, --dataNum);
		}
	}

	//实现Output接口的方法
	@Override
	public void getData(String msg) {
		if(dataNum > MAX_CACHE_SIZE){
			System.out.println("输出队列已满、添加失败");
		}else{
			//把打印数据添加到队列里、已保存数据的数量加1
			printData[dataNum++] = msg;
		}
	}
	
	public static void main(String[] args){
		//创建一个Printer对象、当成Output使用
		Output o = new Printer();
		o.getData("得了洱海");
		o.getData("deleerhai");
		o.out();
		o.getData("java");
		o.getData("ajax");
		o.out();
		
		//创建一个Printer对象、当成Product使用
		Product p = new Printer();
		System.out.println(p.getProductTime());
		//所有接口类型的引用变量都可直接赋给Object类型的变量
		Object obj = p;
	}

}
